package main

import (
	"fmt"
	"time"
)

func main() {
	s := time.Now()
	c := make(chan bool)

	for i := 0; i <100; i++{
		go func(i int){
			fmt.Println("a is ", i)
			c <- true
		}(i)
	}

	for i := 0; i <100; i++{
		<-c
	}
	e := time.Now()
	fmt.Println(e.Sub(s))
}

//func main() {
//	c := make(chan bool)
//
//
//	s := time.Now()
//
//	go func(){
//		for i := 0; i <1000000; i++{
//			fmt.Println(i)
//		}
//		c <- true
//
//	}()
//
//	<-c
//
//	e := time.Now()
//	fmt.Println(e.Sub(s))
//}


//func main() {
//
//	var wg sync.WaitGroup
//
//	for i := 0; i <10; i++{
//		wg.Add(1)
//		go func(i int, wg *sync.WaitGroup){
//
//			defer wg.Done()
//
//			time.Sleep(time.Second * 2)
//			fmt.Println("a is ", i)
//
//		}(i, &wg)
//	}
//
//	wg.Wait()
//}

//func main() {
//	ch := make(chan int)
//
//	var wg sync.WaitGroup
//
//
//	for i := 0; i <10; i++{
//		wg.Add(1)
//		go func(i int, wg *sync.WaitGroup, ch chan int){
//
//			defer wg.Done()
//
//			fmt.Println(i , " ---" , <-ch)
//
//		}(i, &wg, ch)
//	}
//
//
//
//
//	for j := 0; j< 10; j++ {
//		ch <- j
//	}
//	wg.Wait()
//}